Skip to content

Instantly share code, notes, and snippets.

@hirokazumiyaji
Created January 26, 2016 09:47
Show Gist options
  • Save hirokazumiyaji/61f05dc525591e0088d1 to your computer and use it in GitHub Desktop.
Save hirokazumiyaji/61f05dc525591e0088d1 to your computer and use it in GitHub Desktop.
Why Insert SQL.
#
# id | name
#
class User < ActionRecord::Base
end
#
# id | name
#
class Group < ActionRecord::Base
has_many :members, class_name: :GroupMember, dependent: :destroy
end
#
# id | group_id | user_id
#
class GroupMember < ActionRecord::Base
belongs_to :group
belongs_to :user
end
# not run insert sql
@group = Group.includes(:members).find(params[:id])
member_users = Hash[*@group.members.map{|member| [member.user_id, member]}.flatten]
@group_members = User.all.map do |user|
if member_users.include?(user.id)
member_users[user.id].user = user
member_users[user.id]
else
GroupMember.new(group_id: @group.id, user: user)
end
end
# run insert sql
@group = Group.includes(:members).find(params[:id])
member_users = Hash[*@group.members.map{|member| [member.user_id, member]}.flatten]
@group.members = User.all.map do |user|
if member_users.include?(user.id)
member_users[user.id].user = user
member_users[user.id]
else
GroupMember.new(group_id: @group.id, user: user)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment