[英]Seeding RELATIONAL Mongo DB Data in RAILS
我是MonogoDB的新手。 我已經能夠播種數據,但不能播種關系性的東西。
在我的模型中
has_and_belongs_to_many :users
field :encrypted_password, type: String, default: ""
field :name, type: String
field :address, type: String
field :city, type: String
field :state, type: String
field :zip, type: String
在像MySQL這樣的數據庫中,我不會使用上述語法,而是創建一個遷移文件,將其推送到架構中。 在這里,在Mongo中,似乎正在飛速發展。
所以在第一行(has_and ...)中,我認為我可以使用
XYZ.create(:name => "x", {...}, user_id=>[1,2])
User.create(:name => "y", {...}, XYZ_id => [1])
這給了我一個方法錯誤。
Attempted to set a value for 'user_id' which is not allowed on the model XYZ.
因此,我添加了動態屬性行:
include Mongoid::Attributes::Dynamic
在兩個模型上都關聯了模型。
當我登錄用戶時,它不知道該關聯(該特定用戶不屬於XYZ。)
自然地,我加載了Rails C,但是打字時卻看不到我的預期
User.all (or) XYZ.all
我看到了
2.1.0 :004 > User.all
=> #<Mongoid::Criteria
selector: {}
options: {}
class: User
embedded: false>
所以我不確定如何調試問題。 我如何確保適當地建立關系?
從問題的最后一部分可以看出,您確實在使用Mongoid。 但是,從這一點來看,您似乎只需要變得更自在,就可以輕松地體驗Mongoid以及如何真正建立關系。 創建關系時,請勿手動將ID放入model_id字段。 實際上,您只是將整個保存的已保存模型傳遞給要在其上創建關系的模型。
http://mongoid.org/en/mongoid/docs/relations.html
上面的參考頁應該會有所幫助。
對於您的示例,您需要執行以下操作:(出於示例的原因,我使用Home類)
a = User.create(:name => "y", {...})
b = User.create(:name => "user2", {...})
home = Home.create(:name => "x", {...})
home.users = [a, b]
a.homes.push(home)
b.homes.push(home)
可能有更快的方法,這意味着我使用的代碼行減少了,但是我認為這應該有助於關系與Mongoid一起工作的概念,並且可以縮小文檔的搜索范圍,看起來您在這里建立了參考NN關系;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.