首次尝试Rails关联,我无法使以下代码正常工作。我的目标是将报告状态初始设置为记录ID 1.状态表中的记录1是“打开”。我稍后会将其更改为2,因此它是'CLOSED'。
模型设置如下;
class Report < ActiveRecord::Base
has_one :status
end
class Status < ActiveRecord::Base
belongs_to :reports
end
报告控制器具有以下代码,我无法正常工作;
def create
@report = Report.new(report_params)
@report.create_status(1)
if @report.save
redirect_to @report
else
render 'new'
end
end
我知道问题出在@report.create_status(1)
但是我无法找到关于互联网的任何清晰度。我显然没有找对地方。
此外,我的routes.rb配置如下,但我不确定这是否是最正确的方式;
resources :reports do
resources :comments
resource :status
end
UandI的回答纠正了我的问题。有关信息,我对如何配置has_one和belongs_to关联感到困惑。我把它们颠倒了,在我的情况下它们应该如下;
class Report < ActiveRecord::Base
belongs_to :status
end
class Status < ActiveRecord::Base
has_one :reports
end
答案 0 :(得分:2)
假设您要分配的状态为“OPEN”状态,且其列名为column_name
替换以下行:
`@report.create_status(1)`
用这个
@report.status = Status.find_by_column_name('OPEN')
在上面的行中,将column_name
替换为状态列的名称OPEN
E.G。如果您的列的名称是status_name,那么该行将变为@report.status = Status.find_by_status_name('OPEN')