我有一个朋友表,合并两个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
当用户添加好友的友谊模式创造了一个新的记录有唯一ID的user_id
一个friend_id
和name
值。
在我的角度应用程序,我有一个模板,重复每个friendship in friendships
。
这是JSON结果当朋友已经加入,
[{"id":17,"friend_id":3,"name":"Kees Keesen"}]
的id是友谊的id和friend_id
是朋友的实际用户ID。
所以我现在正在做的是复制我的数据。我有一个名称,电子邮件等用户模型。但是,当我添加一个朋友,我必须添加一个名称值(和更多)的友谊记录。
这是users.json JSON结果,
{"id":3,"email":"[email protected]","name":"Kees Keesen"}
所以是有可能保持友谊unqique ID(我需要删除的友谊纪录),但做一个链接,用户模型所以我不必复制我的数据?
*更新*
这里是我的友谊控制器,
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表示没有名称字段。 –
嗯。我关闭了我的Rails服务器。从友谊表中删除了名称列,重新设置了我的数据库并重新调入,但仍然没有更改json输出。我已更新我的问题以反映更改。也许你可以发现我做错了什么?也许在控制器中。 –