How to define virtual attribute for date_select drop menu using active model

142 views
Skip to first unread message

Loganathan Sellapa

unread,
Aug 14, 2012, 2:50:27 AM8/14/12
to Rails
Hi All,

I am using active model for payment process in my application , i am not able to add field for date field, since it throws error as below undefined method `card_expiration_date(3i)='.

In model:
 
include ActiveModel::Validations
  include ActiveModel::Conversion
  extend ActiveModel::Naming

  attr_accessor: card_expiration_date

In view:

<%=f.date_select :card_expiration_date, :add_month_numbers => false,:discard_day => true, :start_year => (Date.today.year-10), :end_year => (Date.today.year+10),:order=>[ :month,:year] %>


Any help would be appreciated.

regards,
Loganathan
ViewMe

Colin Law

unread,
Aug 14, 2012, 3:36:30 AM8/14/12
to rubyonra...@googlegroups.com
On 14 August 2012 07:50, Loganathan Sellapa <logana...@gmail.com> wrote:
> Hi All,
>
> I am using active model for payment process in my application , i am not
> able to add field for date field, since it throws error as below undefined
> method `card_expiration_date(3i)='.
>
> In model:
> include ActiveModel::Validations
> include ActiveModel::Conversion
> extend ActiveModel::Naming
>
> attr_accessor: card_expiration_date

What is the purpose of the line above? Check the docs for
attr_accessor to see what it does.

Colin

Loganathan Sellapa

unread,
Aug 14, 2012, 3:44:51 AM8/14/12
to rubyonra...@googlegroups.com
I thought it would create getter and setter methods for "card_expiration_date"  and the active model library would do the rest(such as creating virtual attributes card_expiration_date(1i),card_expiration_date(2li),card_expiration_date(3li) for date time attribute(card_expiration_date), let me know if I am wrong.

regards,
Loganathan
ViewMe





--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonra...@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-ta...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.



Colin Law

unread,
Aug 14, 2012, 4:00:30 AM8/14/12
to rubyonra...@googlegroups.com
On 14 August 2012 08:44, Loganathan Sellapa <logana...@gmail.com> wrote:
> I thought it would create getter and setter methods for
> "card_expiration_date" and the active model library would do the rest(such
> as creating virtual attributes
> card_expiration_date(1i),card_expiration_date(2li),card_expiration_date(3li)
> for date time attribute(card_expiration_date), let me know if I am wrong.

Please don't top post, it makes it difficult to follow the thread.
Insert your reply inline in the previous message. Thanks.

You don't need to specify att_accessor for fields in the database,
ActiveRecord will supply them automatically. By providing them
yourself you have disabled the automatic ones.

I guess you are a beginner with Rails so I suggest that you work
through some tutorials to understand the basics. railstutorial.org is
good and is free to use online.

Colin

Loganathan Sellapa

unread,
Aug 14, 2012, 4:40:52 AM8/14/12
to rubyonra...@googlegroups.com
My model doesn't use Activerecord ORM, I need to do validation on the table less model, so I am using the Activemodel library, also I hope the virtual field are needs to be mentioned as "attr_accessor" and I am sorry to mention that the model is table less in previous mail, since I thought people will understand when I say Activemodel.

regards,
Loganathan
ViewMe

pepe

unread,
Aug 15, 2012, 9:48:13 AM8/15/12
to rubyonra...@googlegroups.com
I have never done this. Just trying to help.

I think the problem you're having is that your field doesn't have a date compatible value. If you check it's class it might be NilClass. Since the fields does not belong to a table date_select probably has no idea what to do with it because it doesn't have a 'type'. Have you tried to give the field a Date compatible value before your view is executed, just to try if the view works? Also, maybe type_cast (in ActiveRecord::ConnectionAdapters::Quoting: http://api.rubyonrails.org/
) would help?
Reply all
Reply to author
Forward
0 new messages