2016-12-04 12 views
1

Я новичок в RoR, и я занимаюсь моделями и ассоциациями.связать одну запись с другой через консоль rails

Я создал несколько пользователей и заказы через рельсы консоль с помощью:

order = Order.create(body: "i'm a new order") 
user = User.create(name: "Borja") 

Я хотел бы знать, как назначить должность с определенным идентификатором к пользователю с определенным идентификатором (например, пост (2) принадлежит пользователю (1)), поэтому я могу проверить методы этого отношения с помощью консоли rails.

Спасибо!

модели/user.rb>

class User < ApplicationRecord 
    has_many :orders 
end 

модели/post.rb>

class Order < ApplicationRecord 
    belongs_to :user, optional: true 
end 
+1

'user.posts.create()' или 'Post.create (user_id: user.id)', где 'user' может быть' пользователь = User.first' – dp7

ответ

0
  • Во-первых, вы хотите, чтобы найти пользователя или создать пользователя (если один не делает существовать).
  • Затем вы хотите найти или создать сообщение (если оно не существует)
  • Затем вы хотите вызвать правильный метод, чтобы связать пользователя с сообщением.

Подумайте об methods that User class gains when a has_many association is declared внутри него.

Вышеупомянутый не является оптимальным способом связать пользователя с сообщением, но он является минимальным и заставит вас думать о работе ассоциаций.

PS: Убедитесь, что вы правильно отформатировали свои вопросы. Таким образом, больше людей будет мотивировано отвечать.

Удачи!

+0

Спасибо! Я посмотрю :) –

+0

Вы приветствуете @BorjaOlivera :) – Uzzar

1

Вы назвали класс Order намеренно или это ошибка?

Либо вам нужно изменить имя файла order.rb или вам необходимо изменить название модели для Post

моделей/user.rb

class User < ApplicationRecord 
    has_many :posts 
end 

модели/post.rb

class Post < ApplicationRecord 
    belongs_to :user, optional: true 
end 

Создать запись в пользовательской области

user = User.find(1) 
user.posts.create(body: "some text") # user id will be passed automatically 

# or 

user = User.find(1) 
Post.create(user_id: user.id, body: "some text")