ruby-on-rails Ruby on Rails -需要一个想法

luaexgnf  于 2023-03-09  发布在  Ruby
关注(0)|答案(1)|浏览(319)

我需要一个建议,或者更好地称之为想法
假设你有一个类,让我们称之为树。树是在不同的国家,但其中一些有本地和一些没有。我需要最好的方式如何连接树与国家,使每个国家相同的示例将有不同的值。例如松树将有本地设置为真的加拿大,但不是埃及等。
我知道我可以有多个记录,但我宁愿一些顺利和漂亮的解决方案,避免创建一个示例数千条记录。
现在我只需要一个想法。

atmip9wb

atmip9wb1#

我会这样建模:

class Tree
  has_many :tree_locations
  has_many :countries, through: :tree_locations
  has_many :native_tree_locations, class_name: 'TreeLocation', 
                              -> { where(native: true) }
  has_many :native_countries, through: :native_tree_locations, 
                              class_name: 'country'

class TreeLocation
  belongs_to :tree
  belongs_to :country
  # and a `native` boolean flag in the DB

class Country
  has_many :tree_locations
  has_many :trees, through: :tree_locations
  # ...

这允许给定的tree

  • tree.countries将返回树生长的所有国家/地区,但是
  • tree.native_countries将仅返回该树所在的国家/地区。

相关问题