场景:我有一个带有新事件记录的EventsController。根据我想对该事件/记录的处理,我可能需要创建一个新的票证记录。
class Ticket < ActiveRecord::Base
belongs_to :event
class Event < ActiveRecord::Base
has_many :tickets
在我的EventController中,我有一个方法,例如。
def do_something
@event = Event.find(params[:id])
# I would like to create a Ticket record here
end
我在我的方法中尝试了以下内容:
@ticket = Ticket.new(:event_id => @event.id)
@ticket.ticket_name = @event.event_name
@ticket.ticket_quantity = 1000
@ticket.ticket_price = 0
@ticket.save
以上完全没有。我的日志中甚至没有任何错误。 以及:
Ticket.create!(
:event_id => @event.id,
:ticket_name => @event.event_name,
:ticket_quantity => 1000,
:ticket_price => 0 )
对于这个:我得到: ActiveRecord :: RecordInvalid(验证失败:不允许事件创建票证):
我不确定我是否在正确的地方做过。 感谢
答案 0 :(得分:4)
使用当前的模型关联,通过Ticket
对象创建新Event
的正确方法。像这样:
@ticket = @event.tickets.create(:ticket_name => @event.event_name,
:ticket_quantity => 1000,
:ticket_price => 0)
请注意,您不必指定event_id
。
如需更深入的解释,请查看active record associations。
另一方面,在你的Event
控制器中,save!
如果你!
也应该为你抛出错误。添加bang {{1}}将进行验证,如果失败,则抛出错误。
答案 1 :(得分:0)
执行
rails console
在你的命令行中,尝试在那里创建Ticket对象并查看你得到的输出,然后在此处发布,这将有助于找出问题所在。
你也可以看看
@ticket.errors
在调试器中查看是否有。