Étant donné les données suivantes, la commande ne fonctionne pas dans Mongoid ... Je quitte la ligne de commande et ne la définit pas ou ne l'affiche pas. User.plan est toujours égal à zéro. Et je n'ai aucune idée de comment cela fonctionnerait dans une page Web par rapport à la ligne de commande. J'ai déjà travaillé avec Rails mais pour une raison quelconque, Mongoid me fuit.Comment configurer une référence_one dans Mongoid?
classe Plan:
class Plan
include Mongoid::Document
field :active, :type => Boolean, :default => true
field :cost, :type => Integer
field :emails, :type => Integer
field :active_surveys, :type => Integer
field :name, :type => String
scope :active, where(:active => true)
scope :default, asc(:cost)
referenced_in :user
end
Classe utilisateur:
class User
include Mongoid::Document
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable, :lockable and :timeoutable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
field :name, :type => String
field :admin, :type => Boolean, :default => false
validates_presence_of :name, :email
validates_uniqueness_of :name, :email, :case_sensitive => false
attr_accessible :name, :email, :password, :password_confirmation, :remember_me
references_one :plan
delegate :emails,
:active_surveys,
:to => :plan,
:prefix => true
end
sortie de ligne de commande:
ruby-1.9.2-p0 > p = Plan.where(:name => "Mega").first
=> #<Plan _id: 4d09434aec286527fe000009, active: true, cost: 15, emails: 1000, active_surveys: 100, name: "Mega", user_id: nil>
ruby-1.9.2-p0 > u = User.first
=> #<User _id: 4d042734ec28651f2a000002, email: "[email protected]", encrypted_password: "-", password_salt: "-", remember_token: nil, remember_created_at: nil, reset_password_token: nil, sign_in_count: 1, current_sign_in_at: 2010-12-13 03:36:32 UTC, last_sign_in_at: 2010-12-13 03:36:32 UTC, current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", name: "First Last", admin: true>
ruby-1.9.2-p0 > u.plan
=> nil
ruby-1.9.2-p0 > u.errors
=> {}
ruby-1.9.2-p0 > u.plan = p
=> #<Plan _id: 4d09434aec286527fe000009, active: true, cost: 15, emails: 1000, active_surveys: 100, name: "Mega", user_id: BSON::ObjectId('4d042734ec28651f2a000002')>
ruby-1.9.2-p0 > u.save
=> true
ruby-1.9.2-p0 > u.errors
=> {}
'references_one' et' has_many' sont des alias. Je doute que cela puisse changer quoi que ce soit. – rubish