我有一个课程表和一个标签表。我使用 has_many :through 关系将它们关联起来,我的中间表是 tags_relationship.rb
class Lesson < ActiveRecord::Base
attr_accessible :title, :desc, :content, :tag_name
belongs_to :user
has_many :tag_relationships
has_many :tags, :through => :tag_relationships
end
class Tag < ActiveRecord::Base
attr_accessible :name
has_many :tag_relationships
has_many :lessons, :through => :tag_relationships
end
在我的一个观点中,我试图创建一个虚拟属性。我有...
<div class="tags">
<%= f.label :tag_name, "Tags" %>
<%= f.text_field :tag_name, data: { autocomplete_source: tags_path} %>
</div>
但是我的课程表没有那个属性 tag_name,所以它改为调用我的方法
def tag_name
????????
end
def tag_name=(name)
self.tag = Tag.find_or_initialize_by_name(name) if name.present?
end
但是我不知道在里面放什么?????????我试图在我的标签表中引用 :name 属性。
那时我使用了 has_many 和 belongs_to 关系。我的课属于一个标签(这是错误的),但我能够写......
tag.name
它奏效了。但由于它是一个has_many :through now,我不确定。我尝试使用 tags.name、Lessons.tags.name 等,但我似乎无法让它工作。我如何引用标签表名属性?谢谢你