1

私はRailsから始めていますが、関係に少し混乱しています。問題は非常に単純です。私はStation駅を表すクラスとクラスを持っていShopます。最寄りの鉄道駅を表す駅をショップに持たせたいだけなので、多対 1 の関係になると思います。

ORM がなければ、ステーションの外部キーを shop テーブルに追加するだけです。Rails関係について調べた後、私は

class Shop < ActiveRecord::Base
    belongs_to :station
end

class Station < ActiveRecord::Base
    has_many :shop
end

正確に言えば、この店は私がこの種の奇妙なことに気付いている駅に実際には属していないので、これが正しい方法なのか、それとも混乱しているのかを知りたい.

前もって感謝します。

4

3 に答える 3

1
class Station < ActiveRecord::Base
    has_many :shops, :dependent => "nullify"
end

あなたのステーションが削除されても、ショップは彼らのものになります

于 2012-09-26T11:19:15.967 に答える
1

これが正しい進め方です。「所属する」とは、単に「外部キーを持っている」という意味です。必ずしも、これが実際の関係を説明する賢明な方法であるとは限りません。

投稿されたように、コードはうまく機能しません - has_many 側を複数形にする必要があります。すなわち:

class Station < ActiveRecord::Base
    has_many :shops
end

アプリケーション フォルダから Rails コンソール ('rails c') を起動し、オブジェクトを作成して実験することで、関係が実際に機能するかどうかをテストできます。対応するテーブルを作成したと仮定すると、次のようなことができるはずです。

station = Station.create
shop = Shop.create
shop.station = station
station.shops
station.shops.build

...等

于 2012-09-26T10:02:13.307 に答える
1

belongs_tohas_many関連するオブジェクトの所有権、スコープ、またはライフサイクルのいずれも説明しません。オブジェクト間の参照 (キー) を記述するだけです。

このような参照は、:dependent、:autosave などのオプションでライフサイクルを結び付けることができます。:read_only などのその他のオプションは、エディションの権限を別のエディションへの参照から減らします。

所有権は、自分で定義する必要がある概念です。たとえば、フォーラムの投稿は、さまざまな権限を持つさまざまなユーザーに「属する」ことができます。所有者は誰ですか?管理者?最後の編集者?投稿を作成した人?このような動作には、追加の定義とメカニズムが必要です。これについては、CanCan gem ( https://github.com/ryanb/cancan ) をご覧になることをお勧めします。

于 2012-09-26T09:40:49.863 に答える