Ruby on rails 3.2 如何访问关联模型中的字段?

Ruby on rails 3.2 如何访问关联模型中的字段?,ruby-on-rails-3.2,rails-activerecord,Ruby On Rails 3.2,Rails Activerecord,我有两个相互关联的模型,每个条目可以有一个类别。相反地,我猜这个类别也可能有很多条目 class Entry < ActiveRecord::Base has_one :category end class Category < ActiveRecord::Base belongs_to :entry end 我的索引页面基于@entries.all,它当前构建了一个从条目模型中获取的数据数组。我的索引页面显示了category_id,这很好,但更好的方法是从catego

我有两个相互关联的模型,每个条目可以有一个类别。相反地,我猜这个类别也可能有很多条目

class Entry < ActiveRecord::Base
  has_one :category
end

class Category < ActiveRecord::Base
  belongs_to :entry
end
我的索引页面基于@entries.all,它当前构建了一个从条目模型中获取的数据数组。我的索引页面显示了category_id,这很好,但更好的方法是从category的join模型中提取名称


因此,如果entry.category\u id给了我id,我如何才能得到名称?

您的关联看起来不正确。根据您的db模式,关系是Category有许多条目,条目属于Category。如果从您的模型判断,categories表应该具有entry_id,而不是entries表具有category_id

要进行重构,如果您的逻辑是每个条目只允许一个类别,那么很容易

class Entry < ActiveRecord::Base
  belongs_to :category
end

class Category < ActiveRecord::Base
   has_many :entries
end

# Then `entries` table should have one field `category_id`

# To access an entry's category as per you requested:
@entry.category
类条目

如果您的逻辑是一个条目可能有多个条目,则需要使用多对多关系和中间表。

Ah!这是可行的,我把我的逻辑扭曲了一下,从那以后,我对这些进行了更多的实验,并且更好地理解了它。感谢@billy chan
class Entry < ActiveRecord::Base
  belongs_to :category
end

class Category < ActiveRecord::Base
   has_many :entries
end

# Then `entries` table should have one field `category_id`

# To access an entry's category as per you requested:
@entry.category