У меня есть таблица дружбы,Объединить два Rails модель
create_table "friendships", force: :cascade do |t|
t.integer "user_id"
t.integer "friend_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "name"
end
Когда пользователь добавляет друг модель дружбы создает новую запись с уникальным идентификатором user_id
friend_id
и значением name
.
В моем угловом приложении у меня есть шаблон, который повторяет каждый friendship in friendships
.
Это результат JSON, когда друг был добавлен,
[{"id":17,"friend_id":3,"name":"Kees Keesen"}]
Идентификатор является идентификатор дружбы и friend_id
фактический идентификатор пользователя друга.
Итак, что я делаю сейчас, это дублирование моих данных. У меня есть модель пользователя с именами, сообщениями электронной почты и т. Д. Но когда я добавляю друга, мне нужно добавить значение имени (и больше) в запись дружбы.
Это результат JSON из users.json,
{"id":3,"email":"[email protected]","name":"Kees Keesen"}
Так можно ли сохранить дружбу unqique идентификатор (который мне нужно, чтобы удалить запись дружбы), но сделать ссылку на пользовательскую модель поэтому мне не нужно дублировать мои данные?
* обновление *
Вот мой контроллер дружба,
def index
friends = current_user.friendships.as_json
# friends = current_user.friends.as_json(:only => [:name, :email, :id])
render :json => friends
end
Я добавил это к моей модели пользователя,
has_many :friendships
has_many :friends, :through => :friendships
has_many :inverse_friendships, :class_name => "Friendship", :foreign_key => "friend_id"
has_many :inverse_friends, :through => :inverse_friendships, :source => :user
И это к моей дружбе модели,
belongs_to :user
belongs_to :friend, :class_name => "User"
Я удалил столбец имен из таблицы дружбы, выход для дружбы в формате JSON теперь,
[{"id":2,"user_id":1,"friend_id":1,"created_at":"2015-12-29T19:24:28.788Z","updated_at":"2015-12-29T19:24:28.788Z"}]
Благодарим вас за ввод. Возможно, я неправильно применяю код, но, похоже, изменений нет. Что вы ожидаете от json? Кроме того, если я прокомментирую код в модели «дружбы», json все равно будет отображаться одинаково, другими словами модель дружбы, похоже, ничего не делает. Ах, я вижу, что вы получили код из Railscast. Это был и мой проводник. –
Если ваш JSON не меняется вообще, вы должны перезапустить все. Это совсем другой код;) Самое простое - проверить и убедиться, что в вашем представлении JSON нет поля имени. –
Hm. Я закрыл сервер своих рельсов. Удалили столбец имен из таблицы дружбы, сбросили мою базу данных и повторно загрузили, но все же вывод json не изменился. Я обновил свой вопрос, чтобы отразить изменения. Может быть, вы можете заметить то, что я делаю неправильно? Возможно, в контроллере. –