0

私は Rails に比較的慣れていないので、アプリケーションの理想的なモデル構造を見つけようとしています。これは、家のメンテナンスのための簡単なリマインダー サービスです。アプリの中心モデルはホームです。

各家庭には多くの電化製品があります (食器洗い機、洗濯機、給湯器など)。

各アプライアンスには一連のリマインダーが関連付けられています (つまり、給湯器がある場合は、XYZ を 3 か月ごとに、ABC を 6 か月ごとに実行する必要があります)。

定期的に (毎月/毎週)、すべてのリマインダーのリストが記載されたメーラーが住宅所有者に送信されます。

これに最適なモデル構造を見つけようとしています。

現在、これらは私が持っているモデルですが、これがやり過ぎかどうかはわかりません。

  • 自宅(住所、郵便番号など)
  • アプライアンス (名前、メーカー)
  • リマインダー (Appliance_ID、リマインダー、頻度)
  • ホームアプライアンス (Home_ID、Appliance_ID)
  • ホームリマインダー (Home_ID、Reminder_ID)

協会:

  • ホーム has_many
  • アプライアンス has_many リマインダー
  • ホーム has_many ホームリマインダー

どんな助けでも大歓迎です。

4

1 に答える 1

1

もう少し複雑でないものを選びます。次の 3 つのモデルが必要です。

class Home < ActiveRecord::Base
  has_many :appliances
  has_many :reminders, :through => :appliances
end

class Appliance < ActiveRecord::Base
  belongs_to :home
  has_many :reminders
end

class Reminder < ActiveRecord::Base
  belongs_to :appliance
end

リレーションを使用して、直接has_many :through呼び出すことができることに注意してください。home.reminders

詳細については、ドキュメントの例を参照してくださいhas_many :through: http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association

元の例では、さまざまな定義済みのアプライアンスを参照用にデータベースに保存したいと思われます。私はそれを別の方法で行います。ユーザーがアプライアンスの詳細を設定するときに使用するフォームのドロップダウンに入力するために使用できる、さまざまなメーカーとモデルの構成ファイルを用意します。次に、余分なモデルをスキップして、上記のように単純化できます。

于 2012-04-28T16:02:53.597 に答える