Angesichts der folgenden Daten funktioniert der Befehl nicht in Mongoid ... Ich verlasse die Befehlszeile und es wird nicht eingestellt oder angezeigt. User.plan ist immer noch gleich null. Und ich habe keine Ahnung, wie es in einer Webseite im Vergleich zu nur der Befehlszeile funktionieren würde. Ich habe schon früher mit Rails gearbeitet, aber Mongoid entzieht sich mir aus irgendeinem Grund.Wie richte ich ein References_one in Mongoid ein?
-Plan Klasse:
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
Benutzerklasse:
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
Befehlszeile Ausgabe:
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' und' has_many' sind Aliase. Ich bezweifle, dass das irgendetwas ändern wird. – rubish