嗨,我是 Rails 的新手,从一个简单的应用程序开始,它有许多“任务”,每个任务都附有一个“标签”。所以这种关系就像 - 许多“任务”有一个/相同的“标签”。我如何在我的模型中提出这个问题。我用'task' has_one'tag' 和'tag'belongs_to a 'task' 规则尝试了它,但它仅适用于带有该标签的第一个'task' 以及具有相同'tag' 的其余'tasks'它不会工作。请建议我正确执行此操作的方法。谢谢 :)
class Task < ActiveRecord::Base
has_many :logs
has_one :tag , :foreign_key => "id"
end
class Tag < ActiveRecord::Base
belongs_to :task
end
最佳答案
在我看来,这些关联似乎已经发生了转变——我见过的每个 Rails 新手都在他们的第一个项目中做到了这一点。
你想要的是
class Task < ActiveRecord::Base
has_many :logs
belongs_to :tag
end
class Tag < ActiveRecord::Base
has_many :tasks
end
这样想一想——如果你点击一个标签,你会看到一个包含该标签的所有任务的列表。所以标签有很多任务,每个任务属于一个标签。这与您描述项目的方式相符。 Has_one 用于一对一关系,其中每个任务都有自己的唯一标签。
关于ruby-on-rails - Rails 多对一关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8697181/