Hey Jason, mihawk gave a great example there. Not sure if you're new to CB 
and/or Erlang, but I also found this really confusing when I started 
looking at CB.

If you're at all like me it might help to know that the way the models work 
is using "parameterized modules", which (if I understand them correctly) 
are a way to pass state into a variable when you create it through 
parameters on a special "new" function in the module.

They're kind of controversial in Erlang world as they bring an "OO-like" 
flavour that many dislike (and argue strongly against), and in fact were 
removed from the runtime a couple of versions ago, so there's not even much 
in the way of documentation that comes up in a search 
(http://myotherpants.com/2009/04/parameterized-modules-in-erlang/ gives a 
brief overview, and there are a few notes about them on Stack Overflow).

"P-mods" are pretty core to CB's models though, as they allow 
"construction" of "objects" (really just structured variables with tuples 
in them under the hood) in a Rails-ish way, and so they're still supported 
in CB by using a "parse transform", which basically converts code using 
them to non-parameterized "normal" Erlang code.

So the "new" "method" you're trying to call there is really a 
module:function call which requires the extra "constructor"-like arguments 
mihawk showed in the example in order to "initialize" the variable as a 
parameterized module. Once that's done and you have the p-mod variable in 
play, you can call the module's functions like "accessors" to get hold of 
the state variables being looked after by the p-mod.

Like I said I found this really confusing to start because I was trying to 
get the whole Erlang stateless module:function thing in my head and this 
seemed to be contrary to that approach; what helped me was to grasp and 
remember that what one's really doing with the models (and also Requests 
and other CB constructed that have parameters in their module definitions) 
is using some syntactic sugar to help you deal with some state stuff in a 
more familiar way, if you're coming from e.g. Rails or Django or some other 
environment with an ORM.

Hope this makes sense, and hope others will put me straight if I have 
anything wrong!

Cheers
Igor

On Tuesday, July 1, 2014 11:15:03 PM UTC-4, mihawk wrote:
>
> hi,
>
> Attrs = [{username, "MyName"},{email "[email protected]"}],
> M = boss_record:new(member, Attrs).
>
> M:username().
> M:email().
>
> M1 = M:set(name, "MyName").
> M1:name().
>
> M1:save().
>
>
>
>
>
>
> 2014-07-02 5:28 GMT+08:00 Jason Clark:
>
>> how do i or can i access a model from the console
>> say i make
>> src/model/member.erl
>> -module(member, [Id, Username, Email, Name, PasswordHash, Key, Status]).
>> -define(SECRET_STRING, "Not telling secrets!").
>> -compile(export_all).
>>
>> %% @doc Returns the session identifier.
>> session_identifier() ->
>>     mochihex:to_hex(erlang:md5(?SECRET_STRING ++ Id)).
>>    
>>
>> then in the console run
>> member:new().
>> ** exception error: undefined function member:new/0
>>
>> member:session_identifier().
>> ** exception error: undefined function member:session_identifier/0
>>  any ideas
>> im just following the an evening guide but swtched the ward_boss 
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "ChicagoBoss" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to 
>> Visit this group at http://groups.google.com/group/chicagoboss.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/chicagoboss/9c60f373-bcf1-4308-b7fc-b7e7d1c36e8e%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/chicagoboss/9c60f373-bcf1-4308-b7fc-b7e7d1c36e8e%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"ChicagoBoss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
Visit this group at http://groups.google.com/group/chicagoboss.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/chicagoboss/cbfc2a90-f7f4-469b-a819-ada30c942b49%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to