Ami*_*mad -1 ruby ruby-on-rails
我在这里的方法中有一个非常复杂的if else条件,并且正在考虑使其简化并更容易阅读.
def check
@friends = params[:friends]
@key = User.find_by_email @friends[0]
@val = User.find_by_email @friends[1]
user1 = User.where(email: @friends[0])
user2 = User.where(email: @friends[1])
if Friendship.where(user: @key, friend: @val).exists?
render json: {message: "Relationship already establish"}
else
if user1.exists? && !user2.exists?
@user = @key
@friend = User.create email: @friends[1]
@user.friendships.create friend_id: @friend.id
render json: {success: true}
elsif !user1.exists? && user2.exists?
@friend = @val
@user = User.create email: @friends[0]
@user.friendships.create friend_id: @friend.id
render json: {success: true}
elsif user1.exists? && user2.exists?
if Friendship.where(user: @key, friend: @val).exists?
render json: {message: "Relationship already establish"}
else
@user = @key
@friend = @val
@user.friendships.create friend_id: @friend.id
render json: {success: true}
end
else
@user = User.create email: @friends[0]
@friend = User.create email: @friends[1]
@user.friendships.create friend_id: @friend.id
render json: {success: true}
end
end
end
Run Code Online (Sandbox Code Playgroud)
有没有其他方法来简化这种方法,但仍然给我正确的结果
def check
@user = User.find_or_create_by(email: params[:friends][0])
@friend = User.find_or_create_by(email: params[:friends][1])
if Friendship.where(user: @user, friend: @friend).exists?
render json: {message: "Relationship already establish"}
else
@user.friendships.create(friend_id: @friend.id)
render json: {success: true}
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |