11155
(-- --)
May 21, 2012, 6:02am
1
Hello,
I am writing a RoR application that connects to a couchDB database using
couchrest_model.
The definition of my model is the following one:
class BdsDataAuthor < CouchRest::Model::Base
property :id, Integer
property :first_name, String
property :last_name, String
end
I would like to be able to get the list of the model columns, e.g., the
result of
BdsDataAuthor.columns would be [id, first_name, last_name]
Is it possible? I saw that active_record provides this kind of method
(column_names), but since I am not using active_record...
A solution that I tried is to create a method in the model class (it
works but its not the "best" solution...):
def getColumns
columns = Array.new
columns << "id"
columns << "first_name"
columns << "last_name"
end
Any idea/suggestion to solve this problem?
Thank you
**columns**(table_name, name = nil) public
Returns an array of Column objects for the table specified by table_name. See the concrete implementation for details on the expected parameter values.
Try this.
Ah sorry, I didn’t see that you aren’t using Active Record…
I haven’t used CouchRest, but a quick skim of this:
https://github.com/couchrest/couchrest_model/blob/master/lib/couchrest/model/properties.rb
seems to indicate that what you’re looking for could be accomplished with:
BdsDataAuthor.properties_by_name.keys
–Matt Jones
11155
(-- --)
May 21, 2012, 2:14pm
5
Thanks for your answer.
I will try the properties_with_values method to see if it returns what I
want.
Best regards
Matt Jones wrote in post #1061503:
property :first_name, String
Any idea/suggestion to solve this problem?
I haven't used CouchRest, but a quick skim of this:
# encoding: utf-8
module CouchRest
module Model
module Properties
extend ActiveSupport::Concern
included do
class_attribute(:properties) unless self.respond_to?(:properties)
class_attribute(:properties_by_name) unless self.respond_to?(:properties_by_name)
self.properties ||= []
self.properties_by_name ||= {}
end
# Provide an attribute hash ready to be sent to CouchDB but with
# all the nil attributes removed.
def as_couch_json
super.delete_if{|k,v| v.nil?}
end
# Read the casted value of an attribute defined with a property.
This file has been truncated. show original