Если бы я использовал этот код для настройки системы тегов для моего приложения, как бы я мог визуализировать сообщения с тегами, которые я им назначил. Например, если я назначен спортивный тег в пару постов, как бы я тогда отображал все сообщения со спортивным тегем присвоенного емурендеринг сообщения с назначенным тегом
rails g model tag name:string
rails g model tagging article_id:integer tag_id:integer
rake db:migrate
class Tagging < ActiveRecord::Base
belongs_to :article
belongs_to :tag
end
class Tag < ActiveRecord::Base
has_many :taggings, :dependent => :destroy
has_many :articles, :through => :taggings
end
class Article < ActiveRecord::Base
has_many :comments, :dependent => :destroy
has_many :taggings, :dependent => :destroy
has_many :tags, :through => :taggings
validates_presence_of :name, :content
attr_writer :tag_names
after_save :assign_tags
def tag_names
@tag_names || tags.map(&:name).join(' ')
end
private
def assign_tags
if @tag_names
self.tags = @tag_names.split(/\s+/).map do |name|
Tag.find_or_create_by_name(name)
end
end
end
end
<p>
<%= f.label :tag_names %><br />
<%= f.text_field :tag_names %>
</p>
не ответ это 'tag.articles'? – PeterWong
ли это сделать сообщение с определенным тегом? –
Как и в ответе @Chris Mohr, он выдавал бы столбы с тегом «спорт». Rails автоматически создает правильный SQL на основе 'has_many: through'. Вы можете проверить, что sql генерируется в журнале разработки :) – PeterWong