On Aug 15, 2014, at 2:57 PM, Turcu Marius <[email protected]> wrote:
> i have 2 models
> class User < ActiveRecord::Base
> has_many :notes, :dependent => :destroy
> accepts_nested_attributes_for :notes
> devise :database_authenticatable, :registerable,
> :recoverable, :rememberable, :trackable, :validatable
>
> end
>
>
> class Note < ActiveRecord::Base
> belongs_to :user
> validates :content, presence: true,length: { minimum: 15 }
>
> end
>
> the database schema
>
> create_table "notes", primary_key: "note_id", force: true do |t|
> t.text "content"
> t.integer "user_id"
> end
>
>
>
> create_table "users", primary_key: "user_id", force: true do |t|
> t.string "first_name"
> t.string "last_name"
> t.string "email", default: "", null: false
> t.string "encrypted_password", default: "", null: false
> t.string "reset_password_token"
> t.datetime "reset_password_sent_at"
> t.datetime "remember_created_at"
> t.integer "sign_in_count", default: 0, null: false
> t.datetime "current_sign_in_at"
> t.datetime "last_sign_in_at"
> t.string "current_sign_in_ip"
> t.string "last_sign_in_ip"
> t.datetime "created_at"
> t.datetime "updated_at"
> t.boolean "admin", default: false
> end
>
> this is my method for saving notes
> def save_note
> @note = Note.new(lesson_params)
>
> if @note.save
> flash[:notice] = "You have successfully add a lesson."
> redirect_to pages_home_url
> else
> flash[:notice] = "Failed."
> redirect_to pages_home_url
> end
> end
>
I assume the above code is in a CONTROLLER. If so, you should stick to the
controller actions index, new, create, edit, update, and show. Avoid creating a
controller action with another name.
You didn't show us the VIEW. In the VIEW, does the form you are submitting
contain a user_id ? If not, that is why you don't have a user_id in your notes
record.
If this note is supposed to be associated to the currently logged in user,
you'll want to add
before_filter authenticate_user!
to the top of your controller, and also in your create method do something like
this:
current_user.notes.create(lesson_params)
You will find this documented in the section marked "has_many Association
Reference" on this page:
http://guides.rubyonrails.org/association_basics.html#has-many-association-reference
(By the way, the current_user method itself comes from devise, which
documentation you should thoroughly read here:
https://github.com/plataformatec/devise)
Finally, get yourself RubyMine and learn how to use the Go-To-Declaration
(Command-B). Do that NOW before you go any further. (Another IDE is acceptable
too if it has Go-To-Declaration functionality)
>
> private
>
> def lesson_params
> params.require(:note).permit(
> :content)
> end
> end
>
> when i save a note isn't put in my database the user_id and I don't know
> why...I have to extract the curent user_id and i don't preaty much kknow
> how to do it. Also, i check in console and this i get :" INSERT INTO
> `notes` (`content`) VALUES ('asdasd asdakshdasmd ')". It seems like my
> user_id isn't inserted in db. i came from another world called php and
> there the things are different.
>
> --
> Posted via http://www.ruby-forum.com/.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rubyonrails-talk/ed67b2d2cb8937bf30ffd1595db591b6%40ruby-forum.com.
> For more options, visit https://groups.google.com/d/optout.
>
--
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/rubyonrails-talk/E711BB1D-FC34-4239-9469-4C794E146BED%40datatravels.com.
For more options, visit https://groups.google.com/d/optout.