私はRubyonRailsでWebアプリを作成しようとしています。これにより、さまざまなレストランのメニューが収集され、アプリに表示されます。多対多の関係を作りたいのですが、少し混乱しています。私は多対多の関係をグーグルで検索し、HABTMまたはhas_many / belongs_toについて読みましたが、まだ少し混乱しています。私のクラス:
レストラン={名前}
メニュー={名前、価格}
そして、テーブルに参加します。
menu_restaurant={日付}
私はここで混乱しています。結合テーブルに追加の値を指定してHABTMを使用できないことを読みました。また、HABTMを使用した結合テーブルのモデルは必要ありません。
私の現在のモデル:app / models / menu.rb
class Menu < ActiveRecord::Base
attr_accessible :cenaStudent, :name
has_many :restaurants, dependent: :destroy
validates :priceStudent, presence: true
validates :name, presence:true
end
app / models / restaurant.rb
class Restaurant < ActiveRecord::Base
attr_accessible :name
has_many :menus, dependent: :destroy
validates :name, presence: true
end
app / models / menu_restaurant.rb
class MenuRestaurant < ActiveRecord::Base
attr_accessible :date
end
これらは私のdbテーブルdb/migrate /{timestamp}_create_restaurants.rbと同様の{...}menu.rbです。
class CreateRestaurants < ActiveRecord::Migration
def self.up
create_table :restaurants do |t|
t.string :name
t.timestamps
end
end
def self.down
drop_table :restaurants
end
end
db / migrate / {timestamp} _create_menus_restaurants.rb
class CreateMenusRestaurants < ActiveRecord::Migration
def up
#create the association table
create_table :menus_restaurants, :id => false do |t|
t.integer :menu_id, :null => false
t.integer :restaurant_id, :null => false
t.date :date
end
#add index
add_index :menus_restaurants, [ :menu_id, :restaurant_id]
end
def down
remove_index :menus_restaurants, :column => [ :menu_id, :restaurant_id]
drop_table :menus_restaurants
end
end
Ruby on Railsでどのような関係を使用しますか?どのモデルが必要ですか?
そして、RoRMVCアーキテクチャに関連する2番目の質問があります。関連しているのでここに書きます。
メニューリストを含むPDFファイルをダウンロードする関数をrubyで作成しました。メニュー名と価格を解析します。レストラン名はPDFファイルと一致しています。だから私はそれらをdbに挿入するために必要なデータを持っています。どうすればどこでそれを行うことができますか?いくつかの部分はコントローラーにあり、関数はlibディレクトリにあるべきだと思いますか?これは、任意のアーキテクチャを使用する私の最初のアプリです。これは私の最初のスタックオーバーフローの質問でもあります。何も忘れなかったといいのですが。