Forum: Nitro Og Self-Interaction Question

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
5f65ee21e577b094753cd7d854dc39e4?d=identicon&s=25 Matthew B Gardner (Guest)
on 2007-12-12 18:59
(Received via mailing list)
Hello --
  I'm writing a game which uses Og with MySQL, and I want my website to
be
able to interact with that data as well. I'm wondering about solutions
to
this problem:

Game...

class HelpFile
  property :name, String
  property :body, String
  property :viewed, Integer
end

Web...

class HelpFile
  attr_accessor :name, String
  attr_accessor :body, String, :control => :textarea
end

The web class doesn't need the viewed attribute, but I'm assuming it'll
drop
that attribute from the database if it isn't declared. Likewise, I'm
sure
there will be web-data that I won't need in the game. I know I could
disable
full evolution, but I'd like to not have to do that...especially since I
think that's one of the best reasons to use Og with my project (changing
to
add might not be too terrible). Maybe using two different declarations
of
essentially the same class isn't even good practice, but the game class
having access to web-based methods and vise-versa seems problematic to
me
(not to mention the classes are in two different places).

Does anyone have some insight on this? Implementation solutions?

Thanks for any help -- please let me know if further clarification is
needed,
Matt
45196398e9685000d195ec626d477f0e?d=identicon&s=25 Trans (Guest)
on 2007-12-12 19:03
(Received via mailing list)
On Dec 12, 1:49 am, Matthew B Gardner <weat...@speakeasy.net> wrote:
>         property :viewed, Integer
> that attribute from the database if it isn't declared. Likewise, I'm sure
> there will be web-data that I won't need in the game. I know I could disable
> full evolution, but I'd like to not have to do that...especially since I
> think that's one of the best reasons to use Og with my project (changing to
> add might not be too terrible). Maybe using two different declarations of
> essentially the same class isn't even good practice, but the game class
> having access to web-based methods and vise-versa seems problematic to me
> (not to mention the classes are in two different places).
>
> Does anyone have some insight on this? Implementation solutions?

Seems reasonable that you could define a single base class for the
table then two subclasses that act as "views". If sub-classing does
not provided a means for  avoiding the evolution then just delegate --
which certainly will work.

T.
7a4e995e378ef66de0ceaea5e1381ee1?d=identicon&s=25 George Moschovitis (Guest)
on 2007-12-13 02:55
(Received via mailing list)
One question.

why do you use property for the Game class and attr_accessor for the Web
class?

from what I understand you keep 2 different codebases and a single
database.
This looks like duplication of effort to me (and I can think of
synchronization problems, etc..) I can see no easy solution to your
problem
(apart from changing to :add evolution)

-g.
5f65ee21e577b094753cd7d854dc39e4?d=identicon&s=25 Matthew B Gardner (Guest)
on 2007-12-13 04:32
(Received via mailing list)
Hello --

On Wednesday 12 December 2007 05:56, Trans wrote:
> >         property :body, String
> > The web class doesn't need the viewed attribute, but I'm assuming it'll
> > Does anyone have some insight on this? Implementation solutions?
>
> Seems reasonable that you could define a single base class for the
> table then two subclasses that act as "views". If sub-classing does
> not provided a means for  avoiding the evolution then just delegate --
> which certainly will work.
>
> T.

Thanks for the ideas -- could you expand on what you mean by delegate
though?

Thanks again,
Matt
5f65ee21e577b094753cd7d854dc39e4?d=identicon&s=25 Matthew B Gardner (Guest)
on 2007-12-13 04:37
(Received via mailing list)
Hello --

On Wednesday 12 December 2007 03:20, George Moschovitis wrote:
> One question.
>
> why do you use property for the Game class and attr_accessor for the Web
> class?
>

That was unintentional...I learned Og through tutorials that used
property
instead of the generic accessors. I'm assuming I can use the accessors
everywhere now, or is there a valid reason to keep using property?

> from what I understand you keep 2 different codebases and a single
> database. This looks like duplication of effort to me (and I can think of
> synchronization problems, etc..) I can see no easy solution to your problem
> (apart from changing to :add evolution)
>
> -g.

It's just one codebase (the game), but I want to use the web aspect for
editing things that would otherwise be much more tedious and less
user-friendly inside the game. For example, writing and editing
helpfiles for
things inside a browser would be much easier and dynamic than it would
be
inside the game. I guess I misspoke in my initial post...the two classes
aren't the same, they just share the same data and need to share class
name
to do so (to access the same db table). I think switching to add
evolution
may be the most natural solution for me, but I'm going to look into
Trans's
ideas too.

Thanks for your help,
Matt
5f65ee21e577b094753cd7d854dc39e4?d=identicon&s=25 Matthew B Gardner (Guest)
on 2007-12-13 07:21
(Received via mailing list)
Hello --
  Sorry to reply to myself, but I had some more thoughts...I apologize
if I
wander outside the scope of Nitro/Og at all. I was thinking that I could
declare the attributes for each class shared by the game and the web
interface outside of the class declarations that include game or web
specific
methods. I'm not concerned with them being the same class, I'm just
concerned
about one declaration dropping a table it shouldn't. Also, declaring the
same
attributes for the same class twice doesn't seem very Ruby-ish.

I was thinking, then, that I could just do something like...

class Helpfile # in a file called shared
  attributes...
end

Game...

require 'shared'
class Helpfile
  game methods...
end

Web...

require 'shared'
class Helpfile
  web methods...
end

Now, the game and the web interface wouldn't have access to each other's
methods, which I think would be a problem otherwise. I'm not sure if
this is
good application/web design, but it makes sense to me, anyway.

I know Og stands by itself, but just to make sure...would this cause any
problems on the game side, which only includes Og? --

attr_accessor :body, String, :control => :textarea

I'd need that for the web-side, of course.

Thanks again for any help/answers,
Matt
7a4e995e378ef66de0ceaea5e1381ee1?d=identicon&s=25 George Moschovitis (Guest)
on 2007-12-13 09:56
(Received via mailing list)
>
>
> I know Og stands by itself, but just to make sure...would this cause any
> problems on the game side, which only includes Og? --
>
> attr_accessor :body, String, :control => :textarea
>

no problem whatsoever. :control is just an annotation. it will be just
ignored ;-)

-g.
This topic is locked and can not be replied to.