У меня есть немного простой код, который заставляет меня ломать голову.
Вот модель пользователя:
class User < ActiveRecord::Base
has_one :api_account, inverse_of: :user, dependent: :destroy
# Other user-specific validations come after
Вот связанный api_account:
class ApiAccount < ACtiveRecord::Base
belongs_to :user, inverse_of: :api_account
validates :access_token, presence: true
validates :user, presence: true,
uniqueness: true
В контроллере api_account у меня есть:
response = ### Some JSON response from a distant server
@api_account = @user.create_api_account(:access_token => response[:access_token])
Схема для api_account выглядит так:
create_table "api_accounts", force: true do |t|
t.text "access_token"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "user_id"
end
add_index "api_account", ["user_id"], name: "index_api_accounts_on_user_id"
Всякий раз, когда я запускаю код, я получаю токен доступа в переменной ответа. Когда я использую консоль rails для проверки базы данных, я вижу сохраненный экземпляр с допустимым временем создания и обновления, но значения access_token и user_id равны нулю.
Во-первых, я до сих пор не понимаю, почему эти два поля имеют нулевые значения. И, во-вторых, почему они сохраняются (т.е. проходят проверку) с нулевыми значениями.
Любая помощь будет более чем приветствуется. Тем не менее, я чувствую приближающуюся ладонь! :)
a.errors
, чтобы увидеть результат проверки). учетная запись @user.api_account ‹‹ a и отладка @user.errors - person Razor   schedule 10.01.2015