我使用Ruby on Rails允许用户添加类似Stackoverflow的项目帖子。我可以使用常规MySQL数据库执行此操作,但我不确定它如何与Mongoid一起使用。
这是该过程的工作方式:
现在在我的模型中,我尝试将标记分解为一个数组(在有空格的地方分割),然后一个接一个地保存标记。但是,项目和标记的行不会相互引用。 Project tag_ids = []和Tag project_ids = []
project.rb模型
class Project
include Mongoid::Document
include Mongoid::MultiParameterAttributes
field :client, :type => String
field :description, :type => String
field :url, :type => String
field :project_date, :type => Date
has_and_belongs_to_many :tags
attr_accessor :tag_names
after_save :assign_tags
def tag_names
@tag_names || tags.map(&:name).join(" ")
end
def assign_tags
@project = self
@project_id = self.id
if @tag_names
self.tag_names = @tag_names.split(/\s+/).map do |name|
Tag.find_or_create_by(:name => name)
end
end
end
end
tag.rb model
class Tag
include Mongoid::Document
field :name, :type=> String
has_and_belongs_to_many :projects
end
有关如何添加这些参考ID的任何想法?谢谢!
答案 0 :(得分:1)
我认为你需要这样做:
t = Tag.find_or_create_by(:name => name)
self.tags << t unless (self.tags.include? t)