ruby-on-rails - Rails 多对一关联

标签 ruby-on-rails associations

嗨,我是 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/

相关文章:

mysql - Rails 关联不起作用,user_id 未显示在控制台中

java - 如何通过 Hibernate 插入多对多关系的关联表?

ruby-on-rails - 如何在 Rails 3 中创建自定义 "association methods"?

ruby-on-rails - Ruby 中 Association 的相关内容 (on Rails)

ruby-on-rails - Rails 3 管理部分关于继承和命名空间的设计问题

ruby-on-rails - 虚拟列计数记录

html - Bootstrap Navbar 以非常奇怪的形式显示

ruby-on-rails - Rails 中的私有(private)消息系统

ruby-on-rails - 如何强制轻便摩托车从延迟运行的 Mongo 辅助副本集成员中读取

ruby-on-rails - 获取 fields_for 和 accepts_nested_attributes_for 以处理 belongs_to 关系