new habtm association between core User and plugin Category
Added by Miguel Akira almost 13 years ago
I'm trying to save a new HABTM relationship between User and Category.
My User model:
class User < ActiveRecord::Base
has_and_belongs_to_many :categories
end
My Category model:
class Category < ActiveRecord::Base
has_and_belongs_to_many :users
end
I have the join table set up correctly. THe problem is, I cannot change anything on the User controller, only on the User view. So, in the User view, there's a collection_select:
<%= f.collection_select :category_ids, Category.all, :id, :title, { :selected => @user.category_ids }, { :multiple => true, :name => 'user[category_ids][]' } -%>
I can correclty choose the categories that my User belong to, but when I click submit, every other attribute is saved except the category, which is not updated on the join table.
If I inspect the params, I can see that the category_ids is being passed correctly:
"user"=>{"category_ids"=>["2", "4"]
But i can't do anything with it on the User controller, since I'm not allowed to mess with the code. Is there someway to automatically update the join table, or I have to manually update it?
Thanks!
Replies (2)
RE: new habtm association between core User and plugin Category - Added by Miguel Akira almost 13 years ago
In order to do that, I had to extend the core Update method on my UsersController. To do that, I had to edit the init.rb of my plugin:
### init.rb
## regular init.rb stuff.......
require_dependency 'users_controller'
module UsersControllerPatch
def self.included(base) # :nodoc:
base.class_eval do
unloadable # Send unloadable so it will not be unloaded in development
def update_with_update_patch
temp = update_without_update_patch
@user.categories = Category.find(params[:user][:category_ids])
return @user
end
alias_method_chain :update, :update_patch
end
end
end
UsersController.send(:include, UsersControllerPatch)
And that's it.
RE: new habtm association between core User and plugin Category - Added by ria sophieanty over 8 years ago
maybe its too late for asking now
can you tell me how you set up the join table for the category and the user model? any/what changes you make at user model?
thanks