我想知道是否有人可以快速查看一下。我正在制作一个简单的转换应用程序,它可以在测量单位之间进我需要能够使用连接表自我引用表,该连接表存储每个表之间的关系以及每个之间的转换。然后在关系的任何一方之间引用它。例如1cm = 10mm和10mm = 1cm。
所以到目前为止我有这个:
#migrations
create_table :measures do |t|
t.string :name
end
create_table :measure_measures do |t|
t.integer :measure_id
t.integer :related_measure_id
t.integer :conversion
end
class Measure < ActiveRecord::Base
has_many :related_measures,
:foreign_key => 'measure_id',
:class_name => 'MeasureMeasure',
:dependent => :destroy
has_many :measures, :through => :related_measures
accepts_nested_attributes_for :related_measures,
:reject_if => proc { |attrs| attrs['related_measure_id'].blank? ||
attrs['quantity'].blank? },
:allow_destroy => true
end
#controller
@measure = Measure.find params[:id
#form
<% form_for @measure do |f| %>
<% fields_for :related_measures do |f_r_m| %>
<%= f_r_m.text_field :related_measure_id -%>
<%= f_r_m.text_field :quantity -%>
<% end %>
<% end %>
大多数情况下这都可行。除了我无法访问相关措施的名称,只有所有者。
我需要以某种方式得到它:
f_r_m.object.related_measure.name
但显然尽管我付出了最大的努力,但我无法设置并收到错误。
undefined method `owner_measure' for #<MeasureMeasure:0x1053139a8>
非常感谢帮助。 :)
答案 0 :(得分:0)
has_many :measures, :through => :related_measures, :foreign_key => :related_measure_id
如果没有看到连接模型的内部结构,我们无法诊断此错误。
f_r_m.object.related_measure
指的是联接表。
但我怀疑是因为你没有在连接模型中正确定义关系。哪个应该是这样的:
class MeasureMeasures < ActiveRecord::Base
belongs_to :measure
belongs_to :related_measure, :classname => "Measure"
end