1

Rails 3.2.8 と mySql をデータベースとして使用しています。Setup と Regions の 2 つのモデルがあります。N リージョンしか持てません (N は現在 6 です)。多くのセットアップがあり、各セットアップが 1 つのリージョンにある必要があります。

最も明白な方法は Setup has_one Region のようです。ただし、これにより、すべての新しいセットアップに新しいリージョン オブジェクトが与えられます。ただし、セットアップで領域オブジェクトを再利用したい (そのパラメーターが変更されると、すべてのセットアップで全面的に変更されるようにするため)、セットアップごとに新しいリージョンを作成する必要はありません。私は最善の方法は次のように考えています

class Setup < ActiveRecord::Base
    attr_accessible :name, :region_id
end

class Region < ActiveRecord::Base
    attr_accessible :name
end

コントローラーのセットアップに関連付けられたリージョンが必要な場合は、

setup = Setup.find(id)
region = Region.find(setup.region_id)

これがその方法なのか、それとも ActiveRecord を使用して Rails でこれをキャプチャする他の方法があるのか​​ 、それとも次のようなことができるようにその周りにきちんとした抽象化があるのか​​ を声に出して思っていますか?

region = setup.region
4

3 に答える 3

1

セットアップ モデルの使用 belongs_to :region と地域モデル での関連付けの使用has_many :setups

以下のように:--

class Setup < ActiveRecord::Base
  attr_accessible :name
  belongs_to :region
end

class Region < ActiveRecord::Base
  attr_accessible :name
  has_many :setups
end

それからあなたはすることができます
setup = Setup.find(id)
region = setup.region

于 2013-08-22T07:06:30.307 に答える