Rails 3 - 创建新记录不起作用

时间:2011-02-24 14:08:32

标签: ruby-on-rails

场景:我有一个带有新事件记录的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(验证失败:不允许事件创建票证):

我不确定我是否在正确的地方做过。 感谢

2 个答案:

答案 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
在调试器中

查看是否有。