Я относительно новичок в рельсах, и я не могу понять, как исправить эту ошибку. Так вот мои модели:Rails NoMethodError: неопределенный метод `valid? '
пользователя
class User < ActiveRecord::Base
before_save { email.downcase! }
has_many :tickets
has_many :events, through: :tickets
validates :first_name, presence: true
validates :last_name, presence: true
VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i
validates :email, presence: true, length: { maximum: 255},
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
end
Событие:
class Event < ActiveRecord::Base
has_many :tickets
has_many :users, through: :tickets
validates :event_title, presence: true
validates :event_place, presence: true
validates :event_description, presence: true
validates :event_date, presence: true
validates_numericality_of :event_number_tickets, presence: true, numericality: { only_integer: true }, greater_than: 0
end
билетов:
class Ticket < ActiveRecord::Base
belongs_to :user
belongs_to :event
end
У меня есть тестовый файл на билеты, который
require 'test_helper'
class TicketTest < ActiveSupport::TestCase
def setup
@user = User.new(first_name: "Example", last_name: "User")
@event = Event.new(event_title: "Example Event",
event_place: "123 Example Ave.",
event_description: "Our example event for children to get introduced to technology",
event_date: DateTime.now,
event_number_tickets: 30)
@ticket = Ticket.new(event: @event, ticket_type: "regular", number_of_children: 1)
@user.tickets << @ticket
end
test "should be valid" do
assert @user.tickets.valid?
end
end
Всякий раз, когда я запускаю этот тест, я получаю следующее сообщение об ошибке:
NoMethodError: undefined method `valid?' for #<Ticket::ActiveRecord_Associations_CollectionProxy:0x007fae767617c8>
test/models/ticket_test.rb:18:in `block in <class:TicketTest>'
Должен ли я создать собственный действующий метод для этого конкретного примера.
Прежде всего, спасибо! Во-вторых, я просто хочу запустить тест, чтобы я мог создать событие и связать его с пользователем. Затем я хочу создать билет и связать его с событием. Затем для конкретного пользователя я хочу иметь возможность просматривать их события и билеты для указанного события –
Cool. Я думаю, что вы, вероятно, слишком много работаете в методе настройки. Я бы создал пользователя и событие в вашем методе настройки, а затем вырвал каждое из того, что вы только что описали, в тестовые блоки. Я верну свой ответ на примере. –
Получил это, нет необходимости в ели. еще раз спасибо –