此,如果你有關係的has_many一套
u = User.first
u.clients.find_or_create_by_email('[email protected]')
作品。但是,如果您在客戶端對象上設置了任何驗證,那麼它將不會引發驗證錯誤,如果驗證失敗,它將自動失敗。
您可以檢查輸出,當你做
u.clients.find_or_create_by_email('[email protected]') # => #<Client id: nil, email: '[email protected]', name: nil, user_id: 1, another_attribute: nil, active: true, created_at: nil, updated_at: nil>
和USER_ID將被設置,但沒有客戶端的ID,因爲驗證失敗和客戶端沒有創建
所以您的控制檯這應該只在您傳遞客戶端對象的所有必需屬性並且客戶端對象的驗證已成功傳遞時才創建客戶端。
因此,可以說你的客戶端模型對姓名驗證以及除了電子郵件,那麼你應該做的
u.clients.find_or_create_by_email_and_name('[email protected]', 'my_name') #=> #<Client id: 1, email: '[email protected]', name: 'my_name', user_id: 1, another_attribute: nil, active: true, created_at: "2009-12-14 11:08:23", updated_at: "2009-12-14 11:08:23">
來源
2009-12-14 11:03:55
nas