- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近继承了一个旧的 Rails 应用程序,它有一个名为 Package
的模型。任务之一是能够允许删除包。但是,由于 PackageState
和 Package
模型的设置方式,目前这是不可能的。这是一个例子:
封装型号:
class Package < ActiveRecord::Base
belongs_to :package_state, class_name: 'PackageState', foreign_key: :package_state_id
has_many :package_states
end
以及 PackageState:
class PackageState < ActiveRecord::Base
has_many :packages, :class_name => 'Package'
end
重组的最佳方式是什么
最佳答案
您所描述的是一种单向 has_and_belong_to_many (HABTM) association在 Package
和 PackageState
之间,如下所示:
class Package < ActiveRecord::Base
has_and_belongs_to_many :package_states
end
class PackageState < ActiveRecord::Base
has_many :packages
end
接受的答案 SO question有关单向 HABTM 关联的摘录如下:
Functionally yes, but semantically no. Using HABTM in a "one-sided" fashion will achieve exactly what you want. The name HABTM does unfortunately insinuate a reciprocal relationship that isn't always the case. Similarly, belongs_to :foo makes little intuitive sense here.
Don't get caught up in the semantics of HABTM and the other association, instead just consider where your IDs need to sit in order to query the data appropriately and efficiently. Remember, efficiency considerations should above all account for your productivity.
您还指出
that's not currently possible, due to the way the
PackageState
andPackage
models are setup
但这并不正确。没有什么可以阻止您使用 ActiveRecord
获取包对象并对其调用 destroy
。
您应该问自己打算如何使用这两种模型(特别是在删除包时)并确定哪种关联最有效。考虑到这是一个继承的应用程序,您可能需要处理遗留数据,但这是另一天的主题。
关于mysql - Ruby on Rails : Two Models Both Have Has/Many and Belongs_to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51771375/
我使用的是 Ruby on Rails 4.2。现在使用关系并尝试在 ContosoUniversity of .net MVC 示例中所示的 Instructor 和 Office_Assignme
我有以下关联 class Picture < ActiveRecord::Base belongs_to :user end class User < ActiveRecord::Base h
我有 Category 和 belongs_to 类别的 Product。设置: mix phoenix.new shop cd shop mix ecto.create mix phoenix.ge
我的应用程序中有相当多的 belongs_to 关联,其中一些是可选的(即关联可以为 nil),一些是强制性的(关联必须是有效的父记录。 我最初的方法是使用我自己的验证方法来验证给定的 id(这里是强
我有以下事件记录类 class Car < ActiveRecord::Base belongs_to :owner end 在我尝试这个的代码中 Car.first.owner 它给我错误“未定
visits 有很多 visitsTasks 属于 tasks。 我正在查看 visits 表中的特定行 (visitID),并希望找到所有已完成的任务。在这些任务中,我想访问 path 和 mode
以前有人问过类似的问题,但我就是不明白。 所以我有 Model_A 和 Model_B。模型_B 属于 模型_A。我想做的是,当我创建 Model_A 时,自动调用 Model B 的 create
我有一个模型 class Survey :true end def update_saved_settings!(person=nil) self.responses_saved_d
我有 3 张属于同一批货的发票。创建的第一张发票始终是装运的主发票。 Invoice id shipment_id 21 55 # This is the main invoice 88
我有一个模型下载,带有一个表下载。 downloads 有一个名为 ip_address 的字段,它将 ip 地址存储为整数。我想设置一个 IpAddress 模型,但没有 ip_addresses
我有这个问题: 我有这段代码: 用户.rb: class User Name: Content: | 我在这里错过了什么?我无法访问 full_name 方法,但我不
所以我正在做一个应用程序,其中有一个“游戏”模型,该模型具有来自 4 个不同用户的 4 个属性。其中一个属性是 player_id,另外 3 个是用户 uid(facebook 给出的字符串 id)。
我有两个模型:Users 和 Posts。按照我的设置方式,帖子属于所有者(即用户)并且还有许多参与者(即用户)。在我的用户模型中,我想确保 owner 永远不属于 post。我在前端完成了此操作,但
用户.rb enum gender: [:Male, :Female] belongs_to :qualification 资格.rb has_many :users 当我查询时 User.all.g
用户有很多帖子。 class User has_many :posts end 帖子属于用户。 class Post belongs_to :user end 我正在尝试查找由管理员的用户发布
我正在使用两种不同的模型Person 和Organization。在许多其他属性中,Person 和 Organization 都可以是 Contractor。如果我只使用 Person 模型并想存储
拥有这些示例模型: class Post < ActiveRecord::Base belongs_to :category end class Category < ActiveRecord::
我有一个表格,学生可以在其中注册类(class)。当用户提交表单时,他就注册了类(class)并保存了他的付款信息。换句话说,一个 Enrollment对象被创建,Student对象已更新...除了我
我有 2 个表叫 Member和 MemberResume . MemberResume引用 Member在 key 上memberid . 在 MemberResume模型的关系是这样设置的: 'm
我有一个标记模型,具有与标记和可标记项目的多态关联。可标记项目都与 feed_item (has_one :feed_item) 有关联。我想将标记与 feed_item 相关联,即在 tagging
我是一名优秀的程序员,十分优秀!